concat 函數的範例
CONCAT() 函數不得與 CONCATENATE 指令碼關鍵字相混淆。
簡單來說,Concat() 是用來將多個值/文字/選項串連/聯結成一個字串。不過,它可以用在許多方面,協助解決不同的問題。所有範例均依據下列表格:
Table | MyColumn | Date | Value |
---|---|---|---|
Data | JKL | 01/01/2012 | 11 |
Data1 | WVX | 01/02/2012 | 13 |
Data | GHI | 01/03/2012 | 13 |
Data | ABC | 01/04/2012 | 15 |
Data1 | STU | 01/05/2012 | 18 |
Data1 | PQR | 01/06/2012 | 10 |
Data1 | MNO | 01/07/2012 | 25 |
Data | DEF | 01/08/2012 | 11 |
簡單字串串連
上文提到,concat 函數可以串連值清單中的值。這些值可以是固定值,也可以是隨著選項/資料而變化的值。
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
這組簡單的 concat 陳述式會串連 MyColumn 資料行的所有可能值。您可能會想要新增相異 (DISTINCT) 關鍵字。這可確保各個值在字串中僅顯示一次:
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
使用簡單的 concat 時,您可以選擇將排序加權新增到函數,以便按照您選擇的資料行排列字串值。以下範例已新增日期資料行來排序值。
=CONCAT(MyColumn, ',', Date)
結果:JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF
運算式/set 陳述式中的 Concat()
範例: 將多個動態值傳遞到集合分析運算式
有時候您會想要將動態選取的值傳遞到 set 陳述式。若要這麼做,您需要將幾個單引號新增到字串,以便 CONCAT() 函數傳回 'JKL','VWX' 等等。但是,您無法直接使用單引號,因為評估 Concat 時會解譯單引號,而評估 set 運算式時則不會。需要改用 Chr() 函數:
=CONCAT(Chr(39)&MyColumn&Chr(39),',')
您可以接著將此 concat 陳述式傳遞到運算式內:
=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
在大多數情況下,可以在資料島出現時使用這項技巧。它可以讓您將值傳遞到不影響資料模型任何部份的運算式,因為資料島表格無法聯結至資料模型。
指令碼中的 Concat()
Concat 也可以在指令碼中用來將多列轉換為一個單一資料行值,就和其他任何彙總一樣。
記住先前使用的來源資料,指令碼端 CONCAT 的結果如下:
下列是此指令碼函數的結果:
Table | CombinedData |
---|---|
Data | ABC,DEF,GHI,JKL |
Data1 | MNO,PQR,STU,WVX |
使用 Rank() 影響 Concat()
開始使用其他函數來搭配 concat(),就會開始獲得明智的結果。在此範例中,Rank() 已用來擷取前三個演出者 (按照 Value) 並加以串連。
=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
結果:ABC,MNO,STU